/*
 * test_misc.c
 *
 *  Created on: 03/05/2013
 *      Author: jose
 */


#include <stdio.h>
#include <string.h>
#include "../tests.h"

/*
 * Pasando una cadena correcta
 * Debe funcionar OK longitud 10 de cadena
 */
void
test_string_create_no_len()
{
	char * str = "hola mundo";
	String * s = NULL;

	s = string_create_no_len(str);

	printf("\nCadena %s Longitud %u", s->text, s->len);
}


/*
 * Pasando un puntero nulo
 * Debe fallar el assert de puntero nulo
 */
void
test_string_create_no_len2()
{
	char * str = NULL;
	String * s = NULL;

	s = string_create_no_len(str);

	printf("\nCadena %s Longitud %u", s->text, s->len);
}


/*
 * Pasando una cadena vacía
 * Debe fallar assert de longitud de cadena
 */
void
test_string_create_no_len3()
{
	char * str = "";
	String * s = NULL;

	s = string_create_no_len(str);

	printf("\nCadena %s Longitud %u", s->text, s->len);
}

/*
 * Para probar memcpy
 */
void
test_string_create_no_len4()
{
	char str[] = "hello world";
	String * s = NULL;

	s = string_create_no_len(str);

	printf("\nstr (%d) %.*s", (int) strlen(str), (int) strlen(str), str);
	printf("\ns (%d) %.*s", s->len, s->len, s->text);

	str[3] = '9';

	printf("\nstr (%d) %.*s", (int) strlen(str), (int) strlen(str), str);
	printf("\ns (%d) %.*s", s->len, s->len, s->text);
}


/*
 * Debe andar ok, retornar 0
 */
void
test_string_compare()
{
	String * s1 = NULL;
	String * s2 = NULL;
	s1 = string_create_no_len("hola");
	s2 = string_create_no_len("hola");

	short int i;

	printf("\ns1(%u) %.*s", s1->len, s1->len, s1->text);
	printf("\ns2(%u) %.*s", s2->len, s2->len, s2->text);

	i = string_compare(s1, s2);

	printf("\n%s son iguales", i ? "no" : "");

}


/*
 * Debe andar ok, retornar 1
 */
void
test_string_compare2()
{
	String * s1 = NULL;
	String * s2 = NULL;
	s1 = string_create_no_len("hola");
	s2 = string_create_no_len("hol ");

	short int i;

	printf("\ns1(%u) %.*s", s1->len, s1->len, s1->text);
	printf("\ns2(%u) %.*s", s2->len, s2->len, s2->text);

	i = string_compare(s1, s2);

	printf("\n%s son iguales", i ? "no" : "");

}


/*
 * Debe andar ok, retornar 1
 */
void
test_string_compare3()
{
	String * s1 = NULL;
	String * s2 = NULL;
	s1 = string_create_no_len("hola");
	s2 = string_create_no_len("hola");

	short int i;

	printf("\ns1(%u) %.*s", s1->len, s1->len, s1->text);
	printf("\ns2(%u) %.*s", s2->len, s2->len, s2->text);

	i = string_compare(s1, s2);

	printf("\n%s son iguales", i ? "no" : "");

	s2->len = 3;

	i = string_compare(s1, s2);

	printf("\n%s son iguales", i ? "no" : "");

}
